Barcodes are machine-readable, optical representations of encoded information. In typical applications, barcodes may be printed on, attached to, or otherwise associated with physical or virtual objects, and the encoded information may generally correspond to the associated objects. For example, a barcode printed on product packaging may contain a Universal Product Code (UPC) and/or other information associated with the product.
Traditional barcodes, which are still in use today, are often referred to as linear or one-dimensional barcodes. In one-dimensional barcodes, the encoded information is represented using a series of parallel lines of varying widths and spacing. Over time, barcodes have evolved to now also include matrix or two-dimensional barcodes, where the encoded information is represented using a variety of symbols such as rectangles, dots, hexagons, and other geometric patterns. In general, two-dimensional barcodes are able to represent more information per unit area than one-dimensional barcodes.
One specific type of two-dimensional barcode is the now ubiquitous Quick Response code (QR code) that was developed in the 1990s. OR codes utilize a pattern of three distinctive squares near three respective corners of the barcode, and a smaller fourth square near the fourth corner to normalize the image (e.g., for orientation, size, and viewing angle). The amount of data that can be stored in a QR code depends on the complexity and size of the QR code (expressed as the version of the QR code), as well as the error correction level of the QR code. As an example, a version 40, error correction level L QR code can encode over 4,000 characters of alphanumeric data (which is over 2.5 times the amount of text in these first three paragraphs).